package cn.tedu.spring.life;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/*
    Spring Bean对象的生命周期
*/
@Component
public class Life {
    private String meaning;
    //1.实例化
    public Life(){
        System.out.println("1.实例化阶段[调用无参构造方法]");
    }
    //2.属性赋值
    @Value("世界那么大，不要早结婚")
    public void setMeaning(String meaning) {
        this.meaning = meaning;
        System.out.println("2.属性赋值阶段[调用set方法]");
    }
    //3.初始化
    //创建数据库连接，加载资源文件，进行数据校验
    @PostConstruct
    public void init(){
        System.out.println("3.初始化阶段[调用@PostConstruct注解的方法]");
    }
    //4.生命周期销毁方法
    //断开数据库连接，保存数据，释放占用的资源
    @PreDestroy
    public void destroy(){
        System.out.println("5.销毁阶段[调用@PreDestroy注解的方法]");
    }
}
